44 uint8_t iNVMBuffer[256];
48 pSrc = (
uint8 *) CALIBRATION_NVM_ADDR;
50 for (i = 0; i < 256; i++)
51 *(pDst++) = *(pSrc++);
53 iNVMBuffer[MAG_NVM_OFFSET] = iNVMBuffer[MAG_NVM_OFFSET + 1] = iNVMBuffer[MAG_NVM_OFFSET + 2] = iNVMBuffer[MAG_NVM_OFFSET + 3] = 0xFF;
58 pSrc = (
uint8 *) &itmp32;
59 pDst = iNVMBuffer + MAG_NVM_OFFSET;
60 for (i = 0; i < 4; i++)
61 *(pDst++) = *(pSrc++);
64 for (i = 0; i < 64; i++)
65 *(pDst++) = *(pSrc++);
69 #endif // if F_USING_MAG 75 #if F_USING_GYRO && (F_9DOF_GBY_KALMAN || F_6DOF_GY_KALMAN) 78 uint8_t iNVMBuffer[256];
82 pSrc = (
uint8 *) CALIBRATION_NVM_ADDR;
84 for (i = 0; i < 256; i++)
85 *(pDst++) = *(pSrc++);
87 iNVMBuffer[GYRO_NVM_OFFSET] = iNVMBuffer[GYRO_NVM_OFFSET + 1] = iNVMBuffer[GYRO_NVM_OFFSET + 2] = iNVMBuffer[GYRO_NVM_OFFSET + 3] = 0xFF;
92 pSrc = (
uint8 *) &itmp32;
93 pDst = iNVMBuffer + GYRO_NVM_OFFSET;
94 for (i = 0; i < 4; i++)
95 *(pDst++) = *(pSrc++);
99 pSrc = (
uint8 *) sfg->SV_9DOF_GBY_KALMAN.fbPl;
101 pSrc = (
uint8 *) sfg->SV_6DOF_GY_KALMAN.fbPl;
103 for (i = 0; i < 12; i++)
104 *(pDst++) = *(pSrc++);
115 uint8_t *pSrc, *pDst;
117 uint8_t iNVMBuffer[256];
121 pSrc = (
uint8 *) CALIBRATION_NVM_ADDR;
123 for (i = 0; i < 256; i++)
124 *(pDst++) = *(pSrc++);
126 iNVMBuffer[ACCEL_NVM_OFFSET] = iNVMBuffer[ACCEL_NVM_OFFSET + 1] = iNVMBuffer[ACCEL_NVM_OFFSET + 2] = iNVMBuffer[ACCEL_NVM_OFFSET + 3] = 0xFF;
130 pSrc = (
uint8 *) &itmp32;
131 pDst = iNVMBuffer + ACCEL_NVM_OFFSET;
132 for (i = 0; i < 4; i++)
133 *(pDst++) = *(pSrc++);
136 pSrc = (
uint8 *) &(sfg->AccelCal);
137 for (i = 0; i < 84; i++)
138 *(pDst++) = *(pSrc++);
148 uint8_t *pSrc, *pDst;
150 uint8_t iNVMBuffer[256];
153 pSrc = (
uint8 *) CALIBRATION_NVM_ADDR;
155 for (i = 0; i < 256; i++)
156 *(pDst++) = *(pSrc++);
159 iNVMBuffer[MAG_NVM_OFFSET] = iNVMBuffer[MAG_NVM_OFFSET + 1] = iNVMBuffer[MAG_NVM_OFFSET + 2] = iNVMBuffer[MAG_NVM_OFFSET + 3] = 0xFF;
169 uint8_t *pSrc, *pDst;
171 uint8_t iNVMBuffer[256];
174 pSrc = (
uint8 *) CALIBRATION_NVM_ADDR;
176 for (i = 0; i < 256; i++)
177 *(pDst++) = *(pSrc++);
180 iNVMBuffer[GYRO_NVM_OFFSET] = iNVMBuffer[GYRO_NVM_OFFSET + 1] = iNVMBuffer[GYRO_NVM_OFFSET + 2] = iNVMBuffer[GYRO_NVM_OFFSET + 3] = 0xFF;
190 uint8_t *pSrc, *pDst;
192 uint8_t iNVMBuffer[256];
195 pSrc = (
uint8 *) CALIBRATION_NVM_ADDR;
197 for (i = 0; i < 256; i++)
198 *(pDst++) = *(pSrc++);
201 iNVMBuffer[ACCEL_NVM_OFFSET] = iNVMBuffer[ACCEL_NVM_OFFSET + 1] = iNVMBuffer[ACCEL_NVM_OFFSET + 2] = iNVMBuffer[ACCEL_NVM_OFFSET + 3] = 0xFF;
void EraseGyroCalibrationFromNVM(void)
void SaveMagCalibrationToNVM(SensorFusionGlobals *sfg)
void SaveAccelCalibrationToNVM(SensorFusionGlobals *sfg)
void EraseMagCalibrationFromNVM(void)
MagCalibration MagCal
mag cal storage
The top level fusion structure.
void SaveGyroCalibrationToNVM(SensorFusionGlobals *sfg)
byte NVM_SetBlockFlash(uint8_t *Source, uint32_t Dest, uint16_t Count)
#define F_6DOF_GY_KALMAN
6DOF accel and gyro (Kalman) algorithm selector - 0x2000 to include, 0x0000 otherwise ...
The sensor_fusion.h file implements the top level programming interface.
middleware driver for NVM on Kinetis devices
Provides functions to store calibration to NVM.
void EraseAccelCalibrationFromNVM(void)
SensorFusionGlobals sfg
This is the primary sensor fusion data structure.